单元测试模块

您所在的位置:网站首页 go 单元测试框架 单元测试模块

单元测试模块

2024-07-16 00:11| 来源: 网络整理| 查看: 265

gtest单元测试gtest单元测试

gtest模块提供了常用的单元测试方法。

使用方式:

import "github.com/gogf/gf/test/gtest"

接口文档:

https://godoc.org/github.com/gogf/gf/test/gtest

func C(t *testing.T, f func(t *T))func Assert(value, expect interface{})func AssertEQ(value, expect interface{})func AssertGE(value, expect interface{})func AssertGT(value, expect interface{})func AssertIN(value, expect interface{})func AssertLE(value, expect interface{})func AssertLT(value, expect interface{})func AssertNE(value, expect interface{})func AssertNI(value, expect interface{})func Error(message ...interface{})func Fatal(message ...interface{})

主要说明:

使用C方法创建一个Case,表示一个单元测试用例。一个单元测试方法可以包含多个C,每一个C包含的用例往往表示该方法的其中一种可能性测试。断言方法Assert支持任意类型的变量比较。AssertEQ进行断言比较时,会同时比较类型,即严格断言。使用大小比较断言方法如AssertGE时,参数支持字符串及数字比较,其中字符串比较为大小写敏感。包含断言方法AssertIN及AssertNI支持slice类型参数,暂不支持map类型参数。

用于单元测试的包名既可以使用包名_test,也可直接使用包名(即与测试包同名)。两种使用方式都比较常见,且在Go官方标准库中也均有涉及。但需要注意的是,当需要测试包的私有方法/私有变量时,必须使用包名命名形式。且在使用包名命名方式时,注意仅用于单元测试的相关方法(非Test*测试方法)一般定义为私有,不要公开。

使用示例:

例如gstr模块其中一个单元测试用例:

package gstr_testimport ( "github.com/gogf/gf/test/gtest" "github.com/gogf/gf/text/gstr" "testing")func Test_Trim(t *testing.T) { gtest.C(t, func(t *T) { t.Assert(gstr.Trim(" 123456\n "), "123456") t.Assert(gstr.Trim("#123456#;", "#;"), "123456") })}

也可以这样使用:

package gstr_testimport ( . "github.com/gogf/gf/test/gtest" "github.com/gogf/gf/text/gstr" "testing")func Test_Trim(t *testing.T) { C(t, func() { Assert(gstr.Trim(" 123456\n "), "123456") Assert(gstr.Trim("#123456#;", "#;"), "123456") })}

一个单元测试用例可以包含多个C,一个C也可以执行多个断言。断言成功时直接PASS,但是如果断言失败,会输出如下类似的错误信息,并终止当前单元测试用例的继续执行(不会终止后续的其他单元测试用例)。

=== RUN Test_Trim[ASSERT] EXPECT 123456#; == 1234561. /Users/john/Workspace/Go/GOPATH/src/github.com/gogf/gf/text/gstr/gstr_z_unit_trim_test.go:202. /Users/john/Workspace/Go/GOPATH/src/github.com/gogf/gf/text/gstr/gstr_z_unit_trim_test.go:18--- FAIL: Test_Trim (0.00s)FAIL


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3